Parenting computed fields with data objects

ABSTRACT

Embodiments are directed to visualizing data. A computed field that includes input fields and an object model that includes objects may be provided. One or more of the objects may be determined based on the input fields such that each input field corresponds to a determined object. A sub-graph may be generated based on the determined objects. Zero or more determined objects may be pruned from the sub-graph based on a traversal of the sub-graph and characteristics of the determined objects such that each pruned object may be determined to be an attribute of at least one of the determined objects. In response to the iterative pruning providing one remaining determined object in the sub-graph, assigning the remaining determined object as a parent of the computed field.

CROSS-REFERENCE TO RELATED APPLICATION

This Utility Patent Application is a Continuation of U.S. patentapplication Ser. No. 16/725,986 filed on Dec. 23, 2019, now U.S. Pat.No. 11,188,558 issued on Nov. 30, 2021, which is based on previouslyfiled U.S. Provisional Patent Application No. 62/944,977 filed on Dec.6, 2019, the benefit of the filing dates of which are hereby claimedunder 35 U.S.C. § 119(e) and § 120 and the contents of which are eachfurther incorporated in entirety by reference.

TECHNICAL FIELD

The present invention relates generally to data visualization, and moreparticularly, but not exclusively to, managing the display of objectsincluded in the data visualization.

BACKGROUND

Organizations are generating and collecting an ever increasing amount ofdata. This data may be associated with disparate parts of theorganization, such as, consumer activity, manufacturing activity,customer service, server logs, or the like. For various reasons, it maybe inconvenient for such organizations to effectively utilize their vastcollections of data. In some cases, organizations employ various toolsto generate visualizations of some or all of their data. Employingvisualizations to represent this data may enable organizations toimprove their understanding of critical business operations and helpthem monitor key performance indicators. However, in some cases,organizations may employ visualizations that may be based on fieldsdirectly provided by the underlying data as well as fields that may becomputed by formulas that may take a variety of inputs. In some cases,the complexity of the data employed for generating visualizations mayresult in complex user interfaces. In some cases, naive arrangement ofthese user interfaces may result in user confusion or frustration. Thus,it is with respect to these considerations and others that the presentinvention has been made.

BRIEF DESCRIPTION OF THE DRAWINGS

Non-limiting and non-exhaustive embodiments of the present innovationsare described with reference to the following drawings. In the drawings,like reference numerals refer to like parts throughout the variousfigures unless otherwise specified. For a better understanding of thedescribed innovations, reference will be made to the following DetailedDescription of Various Embodiments, which is to be read in associationwith the accompanying drawings, wherein:

FIG. 1 illustrates a system environment in which various embodiments maybe implemented;

FIG. 2 illustrates a schematic embodiment of a client computer;

FIG. 3 illustrates a schematic embodiment of a network computer;

FIG. 4 illustrates a logical architecture of a system for parentinglogical fields with data objects in accordance with one or more of thevarious embodiments;

FIG. 5 illustrates a logical schematic of a portion of a system forparenting computed fields with data objects in accordance with one ormore of the various embodiments;

FIG. 6A illustrates a logical schematic of an object model for parentingcomputed fields with data objects in accordance with one or more of thevarious embodiments;

FIG. 6B illustrates a logical schematic of an object model for parentingcomputed fields with data objects in accordance with one or more of thevarious embodiments;

FIG. 6C illustrates a logical schematic of an object model for parentingcomputed fields with data objects in accordance with one or more of thevarious embodiments;

FIG. 6D illustrates a logical schematic of an object model for parentingcomputed fields with data objects in accordance with one or more of thevarious embodiments;

FIG. 7 illustrates a portion of a user interface for parenting computedfields with data objects in accordance with one or more of the variousembodiments;

FIG. 8 illustrates an overview flowchart for a process for parentinglogical fields with data objects in accordance with one or more of thevarious embodiments; and

FIG. 9 illustrates a flowchart for a process for parenting logicalfields with data objects in accordance with one or more of the variousembodiments.

DETAILED DESCRIPTION OF VARIOUS EMBODIMENTS

Various embodiments now will be described more fully hereinafter withreference to the accompanying drawings, which form a part hereof, andwhich show, by way of illustration, specific exemplary embodiments bywhich the invention may be practiced. The embodiments may, however, beembodied in many different forms and should not be construed as limitedto the embodiments set forth herein; rather, these embodiments areprovided so that this disclosure will be thorough and complete, and willfully convey the scope of the embodiments to those skilled in the art.Among other things, the various embodiments may be methods, systems,media or devices. Accordingly, the various embodiments may take the formof an entirely hardware embodiment, an entirely software embodiment oran embodiment combining software and hardware aspects. The followingdetailed description is, therefore, not to be taken in a limiting sense.

Throughout the specification and claims, the following terms take themeanings explicitly associated herein, unless the context clearlydictates otherwise. The phrase “in one embodiment” as used herein doesnot necessarily refer to the same embodiment, though it may.Furthermore, the phrase “in another embodiment” as used herein does notnecessarily refer to a different embodiment, although it may. Thus, asdescribed below, various embodiments may be readily combined, withoutdeparting from the scope or spirit of the invention.

In addition, as used herein, the term “or” is an inclusive “or”operator, and is equivalent to the term “and/or,” unless the contextclearly dictates otherwise. The term “based on” is not exclusive andallows for being based on additional factors not described, unless thecontext clearly dictates otherwise. In addition, throughout thespecification, the meaning of “a,” “an,” and “the” include pluralreferences. The meaning of “in” includes “in” and “on.”

For example embodiments, the following terms are also used hereinaccording to the corresponding meaning, unless the context clearlydictates otherwise.

As used herein the term, “engine” refers to logic embodied in hardwareor software instructions, which can be written in a programminglanguage, such as C, C++, Objective-C, COBOL, Java™, PHP, Perl,JavaScript, Ruby, Rust, VBScript, Microsoft .NET™ languages such as C#,or the like. An engine may be compiled into executable programs orwritten in interpreted programming languages. Software engines may becallable from other engines or from themselves. Engines described hereinrefer to one or more logical modules that can be merged with otherengines or applications, or can be divided into sub-engines. The enginescan be stored in non-transitory computer-readable medium or computerstorage device and be stored on and executed by one or more generalpurpose computers, thus creating a special purpose computer configuredto provide the engine.

As used herein, the term “data source” refers to databases,applications, services, file systems, or the like, that store or provideinformation for an organization. Examples of data sources may include,RDBMS databases, graph databases, spreadsheets, file systems, documentmanagement systems, local or remote data streams, or the like. In somecases, data sources are organized around one or more tables ortable-like structure. In other cases, data sources be organized as agraph or graph-like structure.

As used herein the term “data model” refers to one or more datastructures that provide a representation of an underlying data source.In some cases, data models may provide views of a data source forparticular applications. Data models may be considered views orinterfaces to the underlying data source. In some cases, data models maymap directly to a data source (e.g., practically a logical passthrough). Also, in some cases, data models may be provided by a datasource. In some circumstances, data models may be considered interfacesto data sources. Data models enable organizations to organize or presentinformation from data sources in ways that may be more convenient, moremeaningful (e.g, easier to reason about), safer, or the like.

As used herein the term “object model” refers a data model based on oneor more data structures that may be comprised of one or more nodes andone or more edges to represent data objects and relationships between oramong them. Nodes may be associated with one or more data objects andedges may be associated with one or more relationships between the dataobjects.

As used herein the term “data object” refers to one or more entities ordata structures that comprise data models. In some cases, data objectsmay be considered portions of the data model. Data objects may representindividual instances of items or classes or kinds of items.

As used herein the term “panel” refers to region within a graphical userinterface (GUI) that has a defined geometry (e.g., x, y, z-order) withinthe GUI. Panels may be arranged to display information to users or tohost one or more interactive controls. The geometry or styles associatedwith panels may be defined using configuration information, includingdynamic rules. Also, in some cases, users may be enabled to performactions on one or more panels, such as, moving, showing, hiding,re-sizing, re-ordering, or the like.

As user herein the “visualization model” refers to one or more datastructures that represent one or more representations of a data modelthat may be suitable for use in a visualization that is displayed on oneor more hardware displays. Visualization models may define styling oruser interface features that may be made available to non-authoringuser.

As used herein the term “display object” refers to one or more datastructures that comprise visualization models. In some cases, displayobjects may be considered portions of the visualization model. Displayobjects may represent individual instances of items or entire classes orkinds of items that may be displayed in a visualization. In someembodiments, display objects may be considered or referred to as viewsbecause they provide a view of some portion of the data model.

As used herein the term “computed field” refers to one or more datastructures that represent a computed field that may be used invisualizations or visualization models. Computed fields may includeinput fields that refer or reference other field in a data source, dataobject, constant values, user provided values, or the like, orcombination thereof. For example, a field that represent the meanaverage of two input fields may be considered a computed field with twoinput fields.

As used herein the term “parentable” refers to circumstances orconditions where a computed field has been determined suitable for beingassigned or associated with an object in an object model that may beconsidered the parent of the computed field.

As used herein the term “unparentable” refers to circumstances orconditions where a computed field has been determined unsuitable forbeing assigned or associated with an object in an object model that maybe considered the parent of the computed field.

As used herein the term “configuration information” refers toinformation that may include rule based policies, pattern matching,scripts (e.g., computer readable instructions), or the like, that may beprovided from various sources, including, configuration files,databases, user input, plug-ins, extensions, loadable libraries,built-in defaults, or the like, or combination thereof.

The following briefly describes embodiments of the invention in order toprovide a basic understanding of some aspects of the invention. Thisbrief description is not intended as an extensive overview. It is notintended to identify key or critical elements, or to delineate orotherwise narrow the scope. Its purpose is merely to present someconcepts in a simplified form as a prelude to the more detaileddescription that is presented later.

Briefly stated, various embodiments are directed to visualizing datausing one or more processors that execute one or more instructions toperform as described herein. In one or more of the various embodiments,a computed field that includes one or more input fields and an objectmodel that includes a plurality of objects may be provided.

In one or more of the various embodiments, one or more of the pluralityof objects may be determined based on the one or more input fields suchthat each input field corresponds to a determined object.

In one or more of the various embodiments, a sub-graph may be generatedbased on the one or more determined objects such that the one or moredetermined objects may be nodes of the sub-graph and relationshipsbetween two or more of the determined objects may be edges of thesub-graph.

In one or more of the various embodiments, zero or more determinedobjects may be iteratively pruned from the sub-graph based on atraversal of the sub-graph and one or more characteristics of the one ormore determined objects such that each pruned object may be determinedto be an attribute of at least one the one or more determined objects.

In one or more of the various embodiments, in response to the iterativepruning providing one remaining determined object in the sub-graph,assigning the remaining determined object as a parent of the computedfield.

In one or more of the various embodiments, the computed field may bedisplayed in a user-interface based on the parent of the computed field.

In one or more of the various embodiments, in response to the iterativepruning providing two or more remaining determined objects in thesub-graph, determining that the computed field may be an unparentablecomputed field. In some embodiments, displaying the unparentablecomputed field in the user-interface.

In one or more of the various embodiments, the computed field may bedetermined to be an unparentable computed field based on one or more ofthe input fields being a constant value.

In one or more of the various embodiments, the computed field may bedetermined to an unparentable computed field based on a computationassociated with the computed field being an aggregate function.

In one or more of the various embodiments, one or more attributes of theone or more determined objects may be determined based on a existence ofa many-to-one relationship between two of the determined objects.

Illustrated Operating Environment

FIG. 1 shows components of one embodiment of an environment in whichembodiments of the invention may be practiced. Not all of the componentsmay be required to practice the invention, and variations in thearrangement and type of the components may be made without departingfrom the spirit or scope of the invention. As shown, system 100 of FIG.1 includes local area networks (LANs)/wide area networks(WANs)-(network) 110, wireless network 108, client computers 102-105,visualization server computer 116, data source server computer 118, orthe like.

At least one embodiment of client computers 102-105 is described in moredetail below in conjunction with FIG. 2. In one embodiment, at leastsome of client computers 102-105 may operate over one or more wired orwireless networks, such as networks 108, or 110. Generally, clientcomputers 102-105 may include virtually any computer capable ofcommunicating over a network to send and receive information, performvarious online activities, offline actions, or the like. In oneembodiment, one or more of client computers 102-105 may be configured tooperate within a business or other entity to perform a variety ofservices for the business or other entity. For example, client computers102-105 may be configured to operate as a web server, firewall, clientapplication, media player, mobile telephone, game console, desktopcomputer, or the like. However, client computers 102-105 are notconstrained to these services and may also be employed, for example, asfor end-user computing in other embodiments. It should be recognizedthat more or less client computers (as shown in FIG. 1) may be includedwithin a system such as described herein, and embodiments are thereforenot constrained by the number or type of client computers employed.

Computers that may operate as client computer 102 may include computersthat typically connect using a wired or wireless communications mediumsuch as personal computers, multiprocessor systems, microprocessor-basedor programmable electronic devices, network PCs, or the like. In someembodiments, client computers 102-105 may include virtually any portablecomputer capable of connecting to another computer and receivinginformation such as, laptop computer 103, mobile computer 104, tabletcomputers 105, or the like. However, portable computers are not solimited and may also include other portable computers such as cellulartelephones, display pagers, radio frequency (RF) devices, infrared (IR)devices, Personal Digital Assistants (PDAs), handheld computers,wearable computers, integrated devices combining one or more of thepreceding computers, or the like. As such, client computers 102-105typically range widely in terms of capabilities and features. Moreover,client computers 102-105 may access various computing applications,including a browser, or other web-based application.

A web-enabled client computer may include a browser application that isconfigured to send requests and receive responses over the web. Thebrowser application may be configured to receive and display graphics,text, multimedia, and the like, employing virtually any web-basedlanguage. In one embodiment, the browser application is enabled toemploy JavaScript, HyperText Markup Language (HTML), eXtensible MarkupLanguage (XML), JavaScript Object Notation (JSON), Cascading StyleSheets (CSS), or the like, or combination thereof, to display and send amessage. In one embodiment, a user of the client computer may employ thebrowser application to perform various activities over a network(online). However, another application may also be used to performvarious online activities.

Client computers 102-105 also may include at least one other clientapplication that is configured to receive or send content betweenanother computer. The client application may include a capability tosend or receive content, or the like. The client application may furtherprovide information that identifies itself, including a type,capability, name, and the like. In one embodiment, client computers102-105 may uniquely identify themselves through any of a variety ofmechanisms, including an Internet Protocol (IP) address, a phone number,Mobile Identification

Number (MIN), an electronic serial number (ESN), a client certificate,or other device identifier. Such information may be provided in one ormore network packets, or the like, sent between other client computers,visualization server computer 116, data source server computer 118, orother computers.

Client computers 102-105 may further be configured to include a clientapplication that enables an end-user to log into an end-user accountthat may be managed by another computer, such as visualization servercomputer 116, data source server computer 118, or the like. Such anend-user account, in one non-limiting example, may be configured toenable the end-user to manage one or more online activities, includingin one non-limiting example, project management, software development,system administration, configuration management, search activities,social networking activities, browse various websites, communicate withother users, or the like. Also, client computers may be arranged toenable users to display reports, interactive user-interfaces, or resultsprovided by visualization server computer 116, data source servercomputer 118.

Wireless network 108 is configured to couple client computers 103-105and its components with network 110. Wireless network 108 may includeany of a variety of wireless sub-networks that may further overlaystand-alone ad-hoc networks, and the like, to provide aninfrastructure-oriented connection for client computers 103-105. Suchsub-networks may include mesh networks, Wireless LAN (WLAN) networks,cellular networks, and the like. In one embodiment, the system mayinclude more than one wireless network.

Wireless network 108 may further include an autonomous system ofterminals, gateways, routers, and the like connected by wireless radiolinks, and the like. These connectors may be configured to move freelyand randomly and organize themselves arbitrarily, such that the topologyof wireless network 108 may change rapidly.

Wireless network 108 may further employ a plurality of accesstechnologies including 2nd (2G), 3rd (3G), 4th (4G) 5th (5G) generationradio access for cellular systems, WLAN, Wireless Router (WR) mesh, andthe like. Access technologies such as 2G, 3G, 4G, 5G, and future accessnetworks may enable wide area coverage for mobile computers, such asclient computers 103-105 with various degrees of mobility. In onenon-limiting example, wireless network 108 may enable a radio connectionthrough a radio network access such as Global System for Mobilcommunication (GSM), General Packet Radio Services (GPRS), Enhanced DataGSM Environment (EDGE), code division multiple access (CDMA), timedivision multiple access (TDMA), Wideband Code Division Multiple Access(WCDMA), High Speed Downlink Packet Access (HSDPA), Long Term Evolution(LTE), and the like. In essence, wireless network 108 may includevirtually any wireless communication mechanism by which information maytravel between client computers 103-105 and another computer, network, acloud-based network, a cloud instance, or the like.

Network 110 is configured to couple network computers with othercomputers, including, visualization server computer 116, data sourceserver computer 118, client computers 102, and client computers 103-105through wireless network 108, or the like. Network 110 is enabled toemploy any form of computer readable media for communicating informationfrom one electronic device to another. Also, network 110 can include theInternet in addition to local area networks (LANs), wide area networks(WANs), direct connections, such as through a universal serial bus (USB)port, Ethernet port, other forms of computer-readable media, or anycombination thereof. On an interconnected set of LANs, including thosebased on differing architectures and protocols, a router acts as a linkbetween LANs, enabling messages to be sent from one to another. Inaddition, communication links within LANs typically include twisted wirepair or coaxial cable, while communication links between networks mayutilize analog telephone lines, full or fractional dedicated digitallines including T1, T2, T3, and T4, or other carrier mechanismsincluding, for example, E-carriers, Integrated Services Digital Networks(ISDNs), Digital Subscriber Lines (DSLs), wireless links includingsatellite links, or other communications links known to those skilled inthe art. Moreover, communication links may further employ any of avariety of digital signaling technologies, including without limit, forexample, DS-0, DS-1, DS-2, DS-3, DS-4, OC-3, OC-12, OC-48, or the like.Furthermore, remote computers and other related electronic devices couldbe remotely connected to either LANs or WANs via a modem and temporarytelephone link. In one embodiment, network 110 may be configured totransport information of an Internet Protocol (IP).

Additionally, communication media typically embodies computer readableinstructions, data structures, program modules, or other transportmechanism and includes any information non-transitory delivery media ortransitory delivery media. By way of example, communication mediaincludes wired media such as twisted pair, coaxial cable, fiber optics,wave guides, and other wired media and wireless media such as acoustic,RF, infrared, and other wireless media.

Also, one embodiment of visualization server computer 116, data sourceserver computer 118 are described in more detail below in conjunctionwith FIG. 3. Although FIG. 1 illustrates visualization server computer116, data source server computer 118, or the like, each as a singlecomputer, the innovations or embodiments are not so limited. Forexample, one or more functions of visualization server computer 116,data source server computer 118, or the like, may be distributed acrossone or more distinct network computers. Moreover, in one or moreembodiments, visualization server computer 116, data source servercomputer 118 may be implemented using a plurality of network computers.Further, in one or more of the various embodiments, visualization servercomputer 116, data source server computer 118, or the like, may beimplemented using one or more cloud instances in one or more cloudnetworks. Accordingly, these innovations and embodiments are not to beconstrued as being limited to a single environment, and otherconfigurations, and other architectures are also envisaged.

Illustrative Client Computer

FIG. 2 shows one embodiment of client computer 200 that may include manymore or less components than those shown. Client computer 200 mayrepresent, for example, one or more embodiment of mobile computers orclient computers shown in FIG. 1.

Client computer 200 may include processor 202 in communication withmemory 204 via bus 228. Client computer 200 may also include powersupply 230, network interface 232, audio interface 256, display 250,keypad 252, illuminator 254, video interface 242, input/output interface238, haptic interface 264, global positioning systems (GPS) receiver258, open air gesture interface 260, temperature interface 262,camera(s) 240, projector 246, pointing device interface 266,processor-readable stationary storage device 234, and processor-readableremovable storage device 236. Client computer 200 may optionallycommunicate with a base station (not shown), or directly with anothercomputer. And in one embodiment, although not shown, a gyroscope may beemployed within client computer 200 to measuring or maintaining anorientation of client computer 200.

Power supply 230 may provide power to client computer 200. Arechargeable or non-rechargeable battery may be used to provide power.The power may also be provided by an external power source, such as anAC adapter or a powered docking cradle that supplements or recharges thebattery.

Network interface 232 includes circuitry for coupling client computer200 to one or more networks, and is constructed for use with one or morecommunication protocols and technologies including, but not limited to,protocols and technologies that implement any portion of the OSI modelfor mobile communication (GSM), CDMA, time division multiple access(TDMA), UDP, TCP/IP, SMS, MMS, GPRS, WAP, UWB, WiMax, SIP/RTP, GPRS,EDGE, WCDMA, LTE, UMTS, OFDM, CDMA2000, EV-DO, HSDPA, or any of avariety of other wireless communication protocols. Network interface 232is sometimes known as a transceiver, transceiving device, or networkinterface card (MC).

Audio interface 256 may be arranged to produce and receive audio signalssuch as the sound of a human voice. For example, audio interface 256 maybe coupled to a speaker and microphone (not shown) to enabletelecommunication with others or generate an audio acknowledgment forsome action. A microphone in audio interface 256 can also be used forinput to or control of client computer 200, e.g., using voicerecognition, detecting touch based on sound, and the like.

Display 250 may be a liquid crystal display (LCD), gas plasma,electronic ink, light emitting diode (LED), Organic LED (OLED) or anyother type of light reflective or light transmissive display that can beused with a computer. Display 250 may also include a touch interface 244arranged to receive input from an object such as a stylus or a digitfrom a human hand, and may use resistive, capacitive, surface acousticwave (SAW), infrared, radar, or other technologies to sense touch orgestures.

Projector 246 may be a remote handheld projector or an integratedprojector that is capable of projecting an image on a remote wall or anyother reflective object such as a remote screen.

Video interface 242 may be arranged to capture video images, such as astill photo, a video segment, an infrared video, or the like. Forexample, video interface 242 may be coupled to a digital video camera, aweb-camera, or the like. Video interface 242 may comprise a lens, animage sensor, and other electronics. Image sensors may include acomplementary metal-oxide-semiconductor (CMOS) integrated circuit,charge-coupled device (CCD), or any other integrated circuit for sensinglight.

Keypad 252 may comprise any input device arranged to receive input froma user. For example, keypad 252 may include a push button numeric dial,or a keyboard. Keypad 252 may also include command buttons that areassociated with selecting and sending images.

Illuminator 254 may provide a status indication or provide light.Illuminator 254 may remain active for specific periods of time or inresponse to event messages. For example, when illuminator 254 is active,it may back-light the buttons on keypad 252 and stay on while the clientcomputer is powered. Also, illuminator 254 may back-light these buttonsin various patterns when particular actions are performed, such asdialing another client computer. Illuminator 254 may also cause lightsources positioned within a transparent or translucent case of theclient computer to illuminate in response to actions.

Further, client computer 200 may also comprise hardware security module(HSM) 268 for providing additional tamper resistant safeguards forgenerating, storing or using security/cryptographic information such as,keys, digital certificates, passwords, passphrases, two-factorauthentication information, or the like. In some embodiments, hardwaresecurity module may be employed to support one or more standard publickey infrastructures (PKI), and may be employed to generate, manage, orstore keys pairs, or the like. In some embodiments, HSM 268 may be astand-alone computer, in other cases, HSM 268 may be arranged as ahardware card that may be added to a client computer.

Client computer 200 may also comprise input/output interface 238 forcommunicating with external peripheral devices or other computers suchas other client computers and network computers. The peripheral devicesmay include an audio headset, virtual reality headsets, display screenglasses, remote speaker system, remote speaker and microphone system,and the like. Input/output interface 238 can utilize one or moretechnologies, such as Universal Serial Bus (USB), Infrared, WiFi, WiMax,Bluetooth™, and the like.

Input/output interface 238 may also include one or more sensors fordetermining geolocation information (e.g., GPS), monitoring electricalpower conditions (e.g., voltage sensors, current sensors, frequencysensors, and so on), monitoring weather (e.g., thermostats, barometers,anemometers, humidity detectors, precipitation scales, or the like), orthe like. Sensors may be one or more hardware sensors that collect ormeasure data that is external to client computer 200.

Haptic interface 264 may be arranged to provide tactile feedback to auser of the client computer. For example, the haptic interface 264 maybe employed to vibrate client computer 200 in a particular way whenanother user of a computer is calling. Temperature interface 262 may beused to provide a temperature measurement input or a temperaturechanging output to a user of client computer 200. Open air gestureinterface 260 may sense physical gestures of a user of client computer200, for example, by using single or stereo video cameras, radar, agyroscopic sensor inside a computer held or worn by the user, or thelike. Camera 240 may be used to track physical eye movements of a userof client computer 200.

GPS transceiver 258 can determine the physical coordinates of clientcomputer 200 on the surface of the Earth, which typically outputs alocation as latitude and longitude values. GPS transceiver 258 can alsoemploy other geo-positioning mechanisms, including, but not limited to,triangulation, assisted GPS (AGPS), Enhanced Observed Time Difference(E-OTD), Cell Identifier (CI), Service Area Identifier (SAI), EnhancedTiming Advance (ETA), Base Station Subsystem (BSS), or the like, tofurther determine the physical location of client computer 200 on thesurface of the Earth. It is understood that under different conditions,GPS transceiver 258 can determine a physical location for clientcomputer 200. In one or more embodiments, however, client computer 200may, through other components, provide other information that may beemployed to determine a physical location of the client computer,including for example, a Media Access Control (MAC) address, IP address,and the like.

In at least one of the various embodiments, applications, such as,operating system 206, client visualization engine 222, other client apps224, web browser 226, or the like, may be arranged to employgeo-location information to select one or more localization features,such as, time zones, languages, currencies, calendar formatting, or thelike. Localization features may be used in display objects, data models,data objects, user-interfaces, reports, as well as internal processes ordatabases. In at least one of the various embodiments, geo-locationinformation used for selecting localization information may be providedby GPS 258. Also, in some embodiments, geolocation information mayinclude information provided using one or more geolocation protocolsover the networks, such as, wireless network 108 or network 111.

Human interface components can be peripheral devices that are physicallyseparate from client computer 200, allowing for remote input or outputto client computer 200. For example, information routed as describedhere through human interface components such as display 250 or keyboard252 can instead be routed through network interface 232 to appropriatehuman interface components located remotely. Examples of human interfaceperipheral components that may be remote include, but are not limitedto, audio devices, pointing devices, keypads, displays, cameras,projectors, and the like. These peripheral components may communicateover a Pico Network such as Bluetooth™, Zigbee™ and the like. Onenon-limiting example of a client computer with such peripheral humaninterface components is a wearable computer, which might include aremote pico projector along with one or more cameras that remotelycommunicate with a separately located client computer to sense a user'sgestures toward portions of an image projected by the pico projectoronto a reflected surface such as a wall or the user's hand.

A client computer may include web browser application 226 that isconfigured to receive and to send web pages, web-based messages,graphics, text, multimedia, and the like. The client computer's browserapplication may employ virtually any programming language, including awireless application protocol messages (WAP), and the like. In one ormore embodiments, the browser application is enabled to employ HandheldDevice Markup Language (HDML), Wireless Markup Language (WML),WMLScript, JavaScript, Standard Generalized Markup Language (SGML),HyperText Markup Language (HTML), eXtensible Markup Language (XML),HTML5, and the like.

Memory 204 may include RAM, ROM, or other types of memory. Memory 204illustrates an example of computer-readable storage media (devices) forstorage of information such as computer-readable instructions, datastructures, program modules or other data. Memory 204 may store BIOS 208for controlling low-level operation of client computer 200. The memorymay also store operating system 206 for controlling the operation ofclient computer 200. It will be appreciated that this component mayinclude a general-purpose operating system such as a version of UNIX, orLINUX™, or a specialized client computer communication operating systemsuch as Windows Phone™, or the Symbian® operating system. The operatingsystem may include, or interface with a Java virtual machine module thatenables control of hardware components or operating system operationsvia Java application programs.

Memory 204 may further include one or more data storage 210, which canbe utilized by client computer 200 to store, among other things,applications 220 or other data. For example, data storage 210 may alsobe employed to store information that describes various capabilities ofclient computer 200. The information may then be provided to anotherdevice or computer based on any of a variety of methods, including beingsent as part of a header during a communication, sent upon request, orthe like. Data storage 210 may also be employed to store socialnetworking information including address books, buddy lists, aliases,user profile information, or the like. Data storage 210 may furtherinclude program code, data, algorithms, and the like, for use by aprocessor, such as processor 202 to execute and perform actions. In oneembodiment, at least some of data storage 210 might also be stored onanother component of client computer 200, including, but not limited to,non-transitory processor-readable removable storage device 236,processor-readable stationary storage device 234, or even external tothe client computer.

Applications 220 may include computer executable instructions which,when executed by client computer 200, transmit, receive, or otherwiseprocess instructions and data. Applications 220 may include, forexample, client visualization engine 222, other client applications 224,web browser 226, or the like. Client computers may be arranged toexchange communications one or more servers.

Other examples of application programs include calendars, searchprograms, email client applications, IM applications, SMS applications,Voice Over Internet Protocol (VOIP) applications, contact managers, taskmanagers, transcoders, database programs, word processing programs,security applications, spreadsheet programs, games, search programs,visualization applications, and so forth.

Additionally, in one or more embodiments (not shown in the figures),client computer 200 may include an embedded logic hardware deviceinstead of a CPU, such as, an Application Specific Integrated Circuit(ASIC), Field Programmable Gate Array (FPGA), Programmable Array Logic(PAL), or the like, or combination thereof. The embedded logic hardwaredevice may directly execute its embedded logic to perform actions. Also,in one or more embodiments (not shown in the figures), client computer200 may include one or more hardware micro-controllers instead of CPUs.In one or more embodiments, the one or more micro-controllers maydirectly execute their own embedded logic to perform actions and accessits own internal memory and its own external Input and Output Interfaces(e.g., hardware pins or wireless transceivers) to perform actions, suchas System On a Chip (SOC), or the like.

Illustrative Network Computer

FIG. 3 shows one embodiment of network computer 300 that may be includedin a system implementing one or more of the various embodiments. Networkcomputer 300 may include many more or less components than those shownin FIG. 3. However, the components shown are sufficient to disclose anillustrative embodiment for practicing these innovations. Networkcomputer 300 may represent, for example, one embodiment of at least oneof visualization server computer 116, data source server computer 118,or the like, of FIG. 1.

Network computers, such as, network computer 300 may include a processor302 that may be in communication with a memory 304 via a bus 328. Insome embodiments, processor 302 may be comprised of one or more hardwareprocessors, or one or more processor cores. In some cases, one or moreof the one or more processors may be specialized processors designed toperform one or more specialized actions, such as, those describedherein. Network computer 300 also includes a power supply 330, networkinterface 332, audio interface 356, display 350, keyboard 352,input/output interface 338, processor-readable stationary storage device334, and processor-readable removable storage device 336. Power supply330 provides power to network computer 300.

Network interface 332 includes circuitry for coupling network computer300 to one or more networks, and is constructed for use with one or morecommunication protocols and technologies including, but not limited to,protocols and technologies that implement any portion of the OpenSystems Interconnection model (OSI model), global system for mobilecommunication (GSM), code division multiple access (CDMA), time divisionmultiple access (TDMA), user datagram protocol (UDP), transmissioncontrol protocol/Internet protocol (TCP/IP), Short Message Service(SMS), Multimedia Messaging Service (MMS), general packet radio service(GPRS), WAP, ultra-wide band (UWB), IEEE 802.16 WorldwideInteroperability for Microwave Access (WiMax), Session InitiationProtocol/Real-time Transport Protocol (SIP/RTP), or any of a variety ofother wired and wireless communication protocols. Network interface 332is sometimes known as a transceiver, transceiving device, or networkinterface card (NIC). Network computer 300 may optionally communicatewith a base station (not shown), or directly with another computer.

Audio interface 356 is arranged to produce and receive audio signalssuch as the sound of a human voice. For example, audio interface 356 maybe coupled to a speaker and microphone (not shown) to enabletelecommunication with others or generate an audio acknowledgment forsome action. A microphone in audio interface 356 can also be used forinput to or control of network computer 300, for example, using voicerecognition.

Display 350 may be a liquid crystal display (LCD), gas plasma,electronic ink, light emitting diode (LED), Organic LED (OLED) or anyother type of light reflective or light transmissive display that can beused with a computer. In some embodiments, display 350 may be a handheldprojector or pico projector capable of projecting an image on a wall orother object.

Network computer 300 may also comprise input/output interface 338 forcommunicating with external devices or computers not shown in FIG. 3.Input/output interface 338 can utilize one or more wired or wirelesscommunication technologies, such as USB™, Firewire™, WiFi, WiMax,Thunderbolt™, Infrared, Bluetooth™, Zigbee™, serial port, parallel port,and the like.

Also, input/output interface 338 may also include one or more sensorsfor determining geolocation information (e.g., GPS), monitoringelectrical power conditions (e.g., voltage sensors, current sensors,frequency sensors, and so on), monitoring weather (e.g., thermostats,barometers, anemometers, humidity detectors, precipitation scales, orthe like), or the like. Sensors may be one or more hardware sensors thatcollect or measure data that is external to network computer 300. Humaninterface components can be physically separate from network computer300, allowing for remote input or output to network computer 300. Forexample, information routed as described here through human interfacecomponents such as display 350 or keyboard 352 can instead be routedthrough the network interface 332 to appropriate human interfacecomponents located elsewhere on the network. Human interface componentsinclude any component that allows the computer to take input from, orsend output to, a human user of a computer. Accordingly, pointingdevices such as mice, styluses, track balls, or the like, maycommunicate through pointing device interface 358 to receive user input.

GPS transceiver 340 can determine the physical coordinates of networkcomputer 300 on the surface of the Earth, which typically outputs alocation as latitude and longitude values. GPS transceiver 340 can alsoemploy other geo-positioning mechanisms, including, but not limited to,triangulation, assisted GPS (AGPS), Enhanced Observed Time Difference(E-OTD), Cell Identifier (CI), Service Area Identifier (SAI), EnhancedTiming Advance (ETA), Base Station Subsystem (BSS), or the like, tofurther determine the physical location of network computer 300 on thesurface of the Earth. It is understood that under different conditions,GPS transceiver 340 can determine a physical location for networkcomputer 300. In one or more embodiments, however, network computer 300may, through other components, provide other information that may beemployed to determine a physical location of the client computer,including for example, a Media Access Control (MAC) address, IP address,and the like.

In at least one of the various embodiments, applications, such as,operating system 306, visualization engine 322, modeling engine 326,other applications 329, or the like, may be arranged to employgeo-location information to select one or more localization features,such as, time zones, languages, currencies, currency formatting,calendar formatting, or the like. Localization features may be used inuser interfaces, dashboards, visualizations, reports, as well asinternal processes or databases. In at least one of the variousembodiments, geo-location information used for selecting localizationinformation may be provided by GPS 340. Also, in some embodiments,geolocation information may include information provided using one ormore geolocation protocols over the networks, such as, wireless network108 or network 111.

Memory 304 may include Random Access Memory (RAM), Read-Only Memory(ROM), or other types of memory. Memory 304 illustrates an example ofcomputer-readable storage media (devices) for storage of informationsuch as computer-readable instructions, data structures, program modulesor other data. Memory 304 stores a basic input/output system (BIOS) 308for controlling low-level operation of network computer 300. The memoryalso stores an operating system 306 for controlling the operation ofnetwork computer 300. It will be appreciated that this component mayinclude a general-purpose operating system such as a version of UNIX, orLINUX™, or a specialized operating system such as MicrosoftCorporation's Windows® operating system, or the Apple Corporation's OSX®operating system. The operating system may include, or interface withone or more virtual machine modules, such as, a Java virtual machinemodule that enables control of hardware components or operating systemoperations via Java application programs. Likewise, other runtimeenvironments may be included.

Memory 304 may further include one or more data storage 310, which canbe utilized by network computer 300 to store, among other things,applications 320 or other data. For example, data storage 310 may alsobe employed to store information that describes various capabilities ofnetwork computer 300. The information may then be provided to anotherdevice or computer based on any of a variety of methods, including beingsent as part of a header during a communication, sent upon request, orthe like. Data storage 310 may also be employed to store socialnetworking information including address books, buddy lists, aliases,user profile information, or the like. Data storage 310 may furtherinclude program code, data, algorithms, and the like, for use by aprocessor, such as processor 302 to execute and perform actions such asthose actions described below. In one embodiment, at least some of datastorage 310 might also be stored on another component of networkcomputer 300, including, but not limited to, non-transitory media insideprocessor-readable removable storage device 336, processor-readablestationary storage device 334, or any other computer-readable storagedevice within network computer 300, or even external to network computer300. Data storage 310 may include, for example, object models 314, datasources 316, visualization models 318, or the like.

Applications 320 may include computer executable instructions which,when executed by network computer 300, transmit, receive, or otherwiseprocess messages (e.g., SMS, Multimedia Messaging Service (MMS), InstantMessage (IM), email, or other messages), audio, video, and enabletelecommunication with another user of another mobile computer. Otherexamples of application programs include calendars, search programs,email client applications, IM applications, SMS applications, Voice OverInternet Protocol (VOIP) applications, contact managers, task managers,transcoders, database programs, word processing programs, securityapplications, spreadsheet programs, games, search programs, and soforth. Applications 320 may include visualization engine 324, modelingengine 326, other applications 329, or the like, that may be arranged toperform actions for embodiments described below. In one or more of thevarious embodiments, one or more of the applications may be implementedas modules or components of another application. Further, in one or moreof the various embodiments, applications may be implemented as operatingsystem extensions, modules, plugins, or the like.

Furthermore, in one or more of the various embodiments, visualizationengine 324, modeling engine 326, other applications 329, or the like,may be operative in a cloud-based computing environment. In one or moreof the various embodiments, these applications, and others, thatcomprise the management platform may be executing within virtualmachines or virtual servers that may be managed in a cloud-based basedcomputing environment. In one or more of the various embodiments, inthis context the applications may flow from one physical networkcomputer within the cloud-based environment to another depending onperformance and scaling considerations automatically managed by thecloud computing environment. Likewise, in one or more of the variousembodiments, virtual machines or virtual servers dedicated tovisualization engine 324, modeling engine 326, other applications 329,or the like, may be provisioned and de-commissioned automatically.

Also, in one or more of the various embodiments, visualization engine324, modeling engine 326, other applications 329, or the like, may belocated in virtual servers running in a cloud-based computingenvironment rather than being tied to one or more specific physicalnetwork computers.

Further, network computer 300 may also comprise hardware security module(HSM) 360 for providing additional tamper resistant safeguards forgenerating, storing or using security/cryptographic information such as,keys, digital certificates, passwords, passphrases, two-factorauthentication information, or the like. In some embodiments, hardwaresecurity module may be employed to support one or more standard publickey infrastructures (PKI), and may be employed to generate, manage, orstore keys pairs, or the like. In some embodiments, HSM 360 may be astand-alone network computer, in other cases, HSM 360 may be arranged asa hardware card that may be installed in a network computer.

Additionally, in one or more embodiments (not shown in the figures),network computer 300 may include an embedded logic hardware deviceinstead of a CPU, such as, an Application Specific Integrated Circuit(ASIC), Field Programmable Gate Array (FPGA), Programmable Array Logic(PAL), or the like, or combination thereof. The embedded logic hardwaredevice may directly execute its embedded logic to perform actions. Also,in one or more embodiments (not shown in the figures), the networkcomputer may include one or more hardware microcontrollers instead of aCPU. In one or more embodiments, the one or more microcontrollers maydirectly execute their own embedded logic to perform actions and accesstheir own internal memory and their own external Input and OutputInterfaces (e.g., hardware pins or wireless transceivers) to performactions, such as System On a Chip (SOC), or the like.

Illustrative Logical System Architecture

FIG. 4 illustrates a logical architecture of system 400 for parentingcomputed fields with data objects in accordance with one or more of thevarious embodiments. In one or more of the various embodiments, system400 may be comprised of various components, including, one or moremodeling engines, such as, modeling engine 402; one or morevisualization engines, such as, visualization engine 404; one or morevisualizations, such as, visualization 406; one or more data sources,such as, data source 408; one or more object models, such as, objectmodel 410 or one or more visualization models, such as, visualizationmodel 412.

In one or more of the various embodiments, modeling engine 402 may bearranged to enable users to design one or more object models based onone or more data sources, such as, data source 408. Accordingly, in oneor more of the various embodiments, modeling engine 402 may be arrangedto enable users to design one or more visualization models based on theone or more object models. In some embodiments, the one or morevisualization models may be provided to visualization engine 404.Accordingly, in one or more of the various embodiments, visualizationengine 404 may be arranged to generate one or more visualizations basedon the visualization models.

In one or more of the various embodiments, modeling engines may bearranged to access one or more data sources, such as, data source 410.In some embodiments, modeling engines may be arranged to include userinterfaces that enable users to browse various data source information,data objects, or the like, to design object models or visualizationmodels that may be used to generate visualizations based on informationstored in the data sources. Accordingly, in some embodiments,visualization models may be designed to provide visualizations thatinclude charts, plots, graphs, tables, graphics, one or more computedfields, styling, explanatory text, interactive elements, user interfacefeatures, or the like.

In some embodiments, users may be provided a graphical user interfacethat enables them to interactively design object models or visualizationmodels such that various elements or display objects in thevisualization model may be associated with data from one or more datasources, such as, data source 410. In one or more of the variousembodiments, data sources, such as, data source 410 may include one ormore of databases, data stores, file systems, or the like, that may belocated locally or remotely. In some embodiments, data sources may beprovided by another service over a network. In some embodiments, theremay be one or more components (not shown) that filter or otherwiseprovide management views or administrative access to the data in a datasource.

In one or more of the various embodiments, object models may be storedin one or more data stores, such as, object model storage 410. In thisexample, for some embodiments, object model storage 410 represents oneor more databases, file systems, or the like, for storing, securing, orindexing object models.

In one or more of the various embodiments, visualization models may bestored in one or more data stores, such as, visualization model storage412. In this example, for some embodiments, visualization model storage412 represents one or more databases, file systems, or the like, forstoring, securing, or indexing visualization models. In one or more ofthe various embodiments, visualization engines, such as, visualizationengine 404 may be arranged to parse or otherwise interpret thevisualization models, object models, and data from data sources togenerate one or more visualizations that may be displayed to users.

FIG. 5 illustrates a logical schematic of a portion of system 500 forparenting computed fields with data objects in accordance with one ormore of the various embodiments. In one or more of the variousembodiments, data sources may include one or more data source objects,such as, tables, files, objects, classes, of the like. In one or more ofthe various embodiments, each data source object may include one or moreitems each associated with one or more fields. Accordingly, in someembodiments, each item in an data source object may represent aninstance of an entity that may include values for some or all of thefields defined for the data source object.

In this example, system 500 includes a portion of data source objectsthat may be from one or more data sources. In this non-limiting example,the data source objects are represented as tables from a relationaldatabase (e.g., RDBMS). One of ordinary skill in the art will appreciatethat production data sources may include many more data source objectsfrom databases (e.g., SQL databases, graph databases, no-sql databases,or the like), remote data providers, service APIs, remote streams,files, or the like. However, in this example, for brevity and clarity,four simple data source objects are included. One of ordinary skill inthe art will appreciate that this example is at least sufficient fordisclosing the innovations included herein.

In one or more of the various embodiments, data sources may include oneor more data source objects, such as, table 502, table 504, table 506,table 508, or the like. In this example, table 502 may represent orders;table 504, may represent customers; table 506 may represent addresses;and table 508 may represent States.

In this example, for some embodiments, table 502 may include variousfields associated with orders. Accordingly, in this example, field 510may represent row identifiers for order records; field 512 may representthe date of an order; field 514, may represent a customer identifierthat references a customer associated with an order; field 516, mayrepresent an identifier that references an address where the order maybe delivered; or the like.

In this example, for some embodiments, table 504 may include variousfields associated with customers. Accordingly, in this example, field518 may represent row identifiers for customer records; field 520 mayrepresent a first name of a customer; field 522, may represent a lastname of a customer; or the like.

In this example, for some embodiments, table 506 may include variousfields associated with addresses. Accordingly, in this example, field524 may represent row identifiers for address records; field 526 mayrepresent a street portion of an address; field 528, may represent acity of an address; field 530 may represent a state identifier thatreferences a state associated with an address; or the like.

Also, in this example, for some embodiments, table 508 may includevarious fields associated with states. Accordingly, in this example,field 532 may represent row identifiers for state records; field 534 mayrepresent the abbreviation for states; or the like.

In this example, a corresponding object model may include order object546, customer object 548, address object 550, state object 552, or thelike, which may be considered nodes in graph. Further, the relationshipsdefined by the tables may be represented as edges, including edge 554,edge 556, edge 558, or the like.

In one or more of the various embodiments, individual fields in datasource objects, such as, table 502-508 may reference of fields in otherdata source objects. In this example, order table 502 includes twofields that reference other tables, namely, customer table 504 andaddress table 506.

Accordingly, in one or more of the various embodiments, these referencesresult in edge 554 and edge 556.

For example, order record 534 has a row (or record) identifier of 101, areference to a customer associated with customer identifier having avalue of 101, and a reference to an address associated with addressidentifier having a value of 304.

Accordingly, in this example, order record 101 is for customer 101 knownas Joe Doe and should be shipped to address 542, which in this exampleis 123 F ST, YAKIMA. Note, the address record 542 includes a referenceto state 707 which corresponds to WA in states table 508.

In some cases, for some embodiments, data source objects or object modelobjects may be described in part based on cardinality relationshipsbetween objects, such as, one-to-one, many-to-one, one-to-many,many-to-many, or the like.

In this example, the relationship between orders and customers may beconsidered many-to-one, because more than one order instance may beassociated with the same customer. Likewise, in this example, therelationship between orders and addresses may be considered many-to-one,because more than one order may ship to the same address.

Also, while not shown here, an example of a one-to-one relationship mayinclude an employees object and an individual tax identifier objectwhere each employee is associated with one and only one individual taxidentifier and each individual tax identifier is associated with one andonly one employee.

Also, while not shown here, an example of a many-to-many relationshipmay include a team object that may represent teams that may beassociated with one or more employees in an organization where anemployee may belong to more than one team at the same time.

FIG. 6A illustrates a logical schematic of object model 600 forparenting computed fields with data objects in accordance with one ormore of the various embodiments. As described above, in one or more ofthe various embodiments, object models may be provided based on one ormore data sources.

Accordingly, in one or more of the various embodiments, users may employobject models to create one or more visualization models that may berendered into visualizations by visualization engines. In some cases,object models may include one or more fields that include valuescalculated or computed rather than read directly from data in source. Insome embodiments, fields that include values based one or morecomputations or functions may be referred to as computed fields.Whereas, fields based on data directly provided by a data source may bereferred to as physical fields. Accordingly, in one or more of thevarious embodiments, visualization authors or designers may include oneor more computed fields in the or more visualization models.

In this example, object model 600 includes various objects, includingline item object 602, product object 604, order object 606, customerobject 608, address object 610, state object 612, or the like. Further,in this example, the edges between the objects represent relationshipsbetween the objects that may be connected by a given edge.

Also, in this example, object model 600 includes two computed fields. Inthis example, computed field 614 computes a value based on inputs fromorder object 606, customer object 608, and address object 610. Likewise,in this example, object model 600 include computed field 616 thatincludes inputs from product object 616, order object 606, and customerobject 608.

FIG. 6B illustrates a logical schematic of object model 600 forparenting computed fields with data objects in accordance with one ormore of the various embodiments. In this example, a modeling engine maybegin to automatically perform one or more actions to determine whichobjects should be assigned as the parent of computed field 614.

As discussed above, computed field 614 includes inputs associated withorder object 606, customer object 608, and address object 610.Accordingly, in this example, sub-graph 618 may be determined from theobjects in object model 600.

If a computed field is being considered for parenting, in one or more ofthe various embodiments, a modeling engine may be arranged to determinea minimum sub-graph in the object model that includes each object thatcontributes input values to the computed field under consideration. Forexample, in some embodiments, a modeling engine may be arranged totraverse an object model to determine the minimum set of objects thatcomprise a sub-graph, such as, sub-graph 618. In some embodiments,because each input parameter of an eligible computed field may beassociated with one object in the object model, the set of object modelscomprising the relevant sub-graph may be determined based on the inputparameters to a computed field.

FIG. 6C illustrates a logical schematic of object model 600 forparenting computed fields with data objects in accordance with one ormore of the various embodiments. In this example, the modeling enginehas determined minimum sub-graphs and has executed one or more actionsto perform recursive pruning of the objects in the sub-graphs associatedwith computed field 614.

Accordingly, in one or more of the various embodiments, modeling enginemay be arranged to prune one or more objects from s sub-graph, such as,sub-graph 618 by eliminating objects that may be considered attributesof other objects. Accordingly, in one or more of the variousembodiments, objects that have many-to-one relationships with otherobjects may be considered for pruning. In this example, each order mayhave one shipping address though many orders may have the same shippingaddress. Accordingly, in this example, address object 610 may beconsidered an attribute of order object 606. Thus, in this example, forsome embodiments, address object 610 may be automatically pruned fromsub-graph 618. Similarly, in this example, for some embodiments,customer object 608 may be pruned from sub-graph 618.

In one or more of the various embodiments, if at the completion of theattribute pruning there remains one object, the modeling engine may bearranged to determine that the remaining object may be the parent of thecomputed field. In this example, because order object 606 may be thelone remaining object, order object 606 may be assigned as the parent ofcomputed field 614.

FIG. 6D illustrates a logical schematic of object model 600 forparenting computed fields with data objects in accordance with one ormore of the various embodiments. In this example, the modeling enginehas determined minimum sub-graphs and has perform recursive pruning ofthe objects in the sub-graph associated with computed field 616. In thisexample, sub-graph 620 may be determined based on the input fields ofcomputed field 616. Accordingly, in one or more of the variousembodiments, before pruning, sub-graph 620 includes, product object 604,order object 606, and customer object 608. In one or more of the variousembodiments, pruning may eliminate customer object 608 fromconsideration. However, in contrast to sub-graph 618 (in FIGS. 6B and6C), after pruning has been completed, two objects remain in sub-graph620 rather than one object. Thus, in this example, for some embodiments,computed field 616 may be determined to remain parented because adefinitive parent object has not been determined.

FIG. 7 illustrates a portion of user interface 700 for parentingcomputed fields with data objects in accordance with one or more of thevarious embodiments. In one or more of the various embodiments, userinterfaces, such as, user interface 700 may include one or morevisualizations, such as, visualization 702. Further, in someembodiments, one or more additional features, or properties determinedin part from the object model that provides the basis for thevisualization may be included in a user interface, such as, userinterface 700.

In this example, panel 704 includes a list of labels associated withobjects in the object model associated with the visualization. In thisexample, the list may be considered to represent the objects in objectmodel 600. Accordingly, in this example, for some embodiments, labelsfor Line Items, Orders, Products, Addresses, States, or the like, may beincluded in panel 704.

Also, in some embodiments, one or more panels, such as, panel 704, maybe arranged to show one or more parented computed fields, such as,computed field 614 as being associated with their assigned parent. Inthis example, panel 704 includes label 706 that displays a label forcomputed field 614. In some embodiments, user interfaces, such as, userinterface 700 may be arranged to employ one or more user interfacestyles or features to indicate which computed fields may have parentobjects. Accordingly, in this example, the indentation of label 706 withrespect to the object labels may be considered to indicate that theorder object may be the parent of a computed field labeled Calc1 (e.g.,computed field 614).

As discussed above, in some cases, computed fields may be considered tobe unparented. Accordingly, in some embodiments, various user interfacefeatures or styles may be employed to indicate that one or more computedfields may not have parents. In this example, panel 708 may beconsidered to display an interactive list of labels associated withunparented computed fields. Accordingly, in this example, label 710 maybe considered to identify an unparented computed field, such as,computed field 616.

Generalized Operations

FIGS. 8-9 represent generalized operations for parenting computed fieldswith data objects in accordance with one or more of the variousembodiments. In one or more of the various embodiments, processes 800 or900 described in conjunction with FIGS. 8-9 may be implemented by orexecuted by one or more processors on a single network computer (ornetwork monitoring computer), such as network computer 300 of FIG. 3. Inother embodiments, these processes, or portions thereof, may beimplemented by or executed on a plurality of network computers, such asnetwork computer 300 of FIG. 3. In yet other embodiments, theseprocesses, or portions thereof, may be implemented by or executed on oneor more virtualized computers, such as, those in a cloud-basedenvironment. However, embodiments are not so limited and variouscombinations of network computers, client computers, or the like may beutilized. Further, in one or more of the various embodiments, theprocesses described in conjunction with FIGS. 8-9 may be used forparenting computed fields with data objects in accordance with at leastone of the various embodiments or architectures such as those describedin conjunction with FIGS. 4-7.

Further, in one or more of the various embodiments, some or all of theactions performed by processes 800, or 900 may be executed in part byvisualization engine 324 or modeling engine 326 executing on one or moreprocessors of one or more network computers.

FIG. 8 illustrates an overview flowchart for process 800 for parentinglogical fields with data objects in accordance with one or more of thevarious embodiments. After a start block, at block 802, in one or moreof the various embodiments, an object model may be provided to modelingengine. As described above, object models may be designed based on oneor more data sources or data models.

At block 804, in one or more of the various embodiments, one or morecomputed fields may be provided. As described above, in someembodiments, visualization authors may be enabled to define variouscomputed fields based on fields values, constants, built-in functions,customer functions, or the like. In one or more of the variousembodiments, each computed fields may be arranged to accepted one ormore input values that may correspond to fields of objects included inthe provided object model.

At block 806, in one or more of the various embodiments, the modelingengine may be arranged to determine one or more parent objects for someor none of the computed fields based the inputs to each computed fieldand the object model.

At decision block 808, in one or more of the various embodiments, if acomputed field may be parented with an object, control may flow to block810; otherwise, control may flow to decision block 812.

At block 810, in one or more of the various embodiments, the modelingengine may be arranged to associate an object with the computed field asits parent object.

At decision block 812, in one or more of the various embodiments, ifmore computed fields remain to be considered for parenting, control mayloop back to block 806; otherwise, control may flow to block 814.

At block 814, in one or more of the various embodiments, a visualizationengine may be arranged to display information associated with one ormore objects and one or more of the computed fields.

Next, in one or more of the various embodiments, control may be returnedto a calling process.

FIG. 9 illustrates a flowchart for process 900 for parenting logicalfields with data objects in accordance with one or more of the variousembodiments. After a start block, at block 902, in one or more of thevarious embodiments, an object model and a computed field may beprovided to a modeling engine. As described above, visualizationauthors, model templates, modeling engine configurations, or the like,may associate one or more computed fields with an object model.Accordingly, in one or more of the various embodiments, the modelingengine or a visualization engine may be arranged to perform actions todetermine if one or more of the computed fields may be parented with anobject in the object model. Thus, in some embodiments, the computedfields associated with an object model may be evaluated to determine ifthey may be eligible for being associated with a parent.

In one or more of the various embodiments, modeling engines may bearranged to evaluate each computed field based on one or morepre-conditions that may determine if a given computed field may besuitable for being associated with parent object.

Accordingly, in one or more of the various embodiments, computed fieldsthat represent aggregate calculations may be immediately excluded fromconsideration. In some embodiments, modeling engines may be arranged toexecute various actions to determine if a computed field may be anaggregated calculation. In some embodiments, computed fields may beassociated with meta-data that expressly indicates if calculationsassociated with a computed field may be aggregating calculations. Forexample, in some embodiments, computed fields may be associated withflags or tags that indicate if calculations associated with the computedfield are aggregate calculations. Also, for example, in someembodiments, modeling engines, or the like, may employ lookup tables,pattern matching, or the like, that may be employed to determine if acomputed field may include one or more aggregate calculations. Forexample, in some embodiments, if the computed field is a built-infunction named SUM, the modeling engine may be arranged to determinethat it is an aggregate calculation by confirming the function SUM is ina lookup table that includes the names of aggregate calculations.Likewise, in some embodiments, if the computed field may includecustomized functions, the author of the function may be enabled to markthe associated computed fields as including aggregates.

At decision block 904, in one or more of the various embodiments, if thecomputed field may be suitable for associating with a parent object,control may flow to block 906; otherwise, control may be returned to acalling process.

At block 906, in one or more of the various embodiments, the modelingengine may be arranged to determine one or more input fields of thecomputed field. As described above, in some embodiments, computed fieldsmay include one or more input fields that may correspond to fields ofobject models.

At decision block 908, in one or more of the various embodiments, if thecomputed field remains suitable for associating with a parent object,control may flow to block 910; otherwise, control may be returned to acalling process.

Accordingly, in some embodiments, the modeling engine may be arranged toiterate over the set of input fields of the computed field to determineif the computed field remains parentable. In some embodiments, if one ormore of the input fields are constants, the computed field may be deemedunparentable.

In one or more of the various embodiments, modeling engine may bearranged to employ additional information, including lookup tables,lists, pattern matching, or the like, provided via configurationinformation to determine if the computed fields associated with acomputed field may render that computed field unparentable. Thus, insome embodiments, modeling engines may be arranged to adapt to localcircumstances without otherwise departing from the scope of theinnovations disclosed herein. For example, in some embodiments, avisualization author or an organization may be enabled to mark one ormore computed fields as unparentable to adapt to local circumstances.

At block 910, in one or more of the various embodiments, the modelingengine may be arranged to provide a sub-graph of the object model basedon the input fields of the computed field and the object model. In oneor more of the various embodiments, modeling engines may be arranged todetermine which objects in the object model may be associated with theinput fields of the computed field.

In some embodiments, the input fields may be associated with meta-data,such as, index values, labels, paths, URIs, or the like, that may beemployed to determine the object that may be associated with a giveninput field. In some embodiments, the information may be employed fordetermining the relationship between an input field and an object may behidden or otherwise not displayed to a user. Alternatively, in someembodiments, the information for associating an input field with anobject may be fully or partially visible to a user. For example, aninput field that may be labeled as Customer.FirstName may indicate thatthe object is Customer and the field is FirstName, or the like.

Accordingly, in one or more of the various embodiments, modeling enginesmay be arranged to assemble a sub-graph of objects based on the objectthat may be associated with the input fields of the computed field. Insome embodiments, this collection of objects may be referred to as asub-graph because the relationships between the objects may be preservedfor subsequent analysis.

At block 912, in one or more of the various embodiments, the modelingengine may be arranged to prune zero or more objects from the sub-graphbased on relationships between the one or more objects associated withthe sub-graph. In one or more of the various embodiments, modelingengines may be arranged to determine objects in the sub-graph that maybe related based on many-to-one relationships. Accordingly, in one ormore of the various embodiments, each object that may be an attribute ofanother object may be removed from the sub-graph. For example, in one ormore of the various embodiments, Order objects may reference Addressobject that represent the shipping address for another. Accordingly, inthis example, the shipping address represented by

Address objects may be considered an attribute or feature of the Orderobject.

In one or more of the various embodiments, modeling engines mayiteratively visit each object in the sub-graph to determine if thevisited object should be pruned from the sub-graph.

At decision block 914, in one or more of the various embodiments, ifpruning of the sub-graph is finished, control may flow to decision block916; otherwise, control may loop back to block 912. In one or more ofthe various embodiments, modeling engines may be arranged to continuingthe pruning actions until all the objects have visited. In someembodiments, modeling engines may be arranged to improve performance bylimiting the traversal of the sub-graph to objects that may havemany-to-one relationships with one or more other objects in thesub-graph.

At decision block 916, in one or more of the various embodiments, if oneobject remains in the sub-graph, control may flow to block 918;otherwise, control may be returned to a calling process. In someembodiments, if all objects or relationships in the sub-graph have beenvisited, there may be two or more object remaining in the sub-graph.Accordingly. in some embodiments, modeling engines may be arranged todetermine that the associated computed field as unparentable. Forexample, for some embodiments, if there are two objects remaining afterthe pruning, parenting the computed field under either or both of theobjects may be confusing to users because neither object is likely tofit the semantics of being of parent of the computed field. Thus, insome embodiments, such objects may be considered unparentable and remainunparented.

At block 918, in one or more of the various embodiments, the modelingengine may be arranged to assign the remaining object as the parent ofthe computed field.

Next, in one or more of the various embodiments, control may be returnedto a calling process.

It will be understood that each block in each flowchart illustration,and combinations of blocks in each flowchart illustration, can beimplemented by computer program instructions. These program instructionsmay be provided to a processor to produce a machine, such that theinstructions, which execute on the processor, create means forimplementing the actions specified in each flowchart block or blocks.The computer program instructions may be executed by a processor tocause a series of operational steps to be performed by the processor toproduce a computer-implemented process such that the instructions, whichexecute on the processor, provide steps for implementing the actionsspecified in each flowchart block or blocks. The computer programinstructions may also cause at least some of the operational steps shownin the blocks of each flowchart to be performed in parallel. Moreover,some of the steps may also be performed across more than one processor,such as might arise in a multi-processor computer system. In addition,one or more blocks or combinations of blocks in each flowchartillustration may also be performed concurrently with other blocks orcombinations of blocks, or even in a different sequence than illustratedwithout departing from the scope or spirit of the invention.

Accordingly, each block in each flowchart illustration supportscombinations of means for performing the specified actions, combinationsof steps for performing the specified actions and program instructionmeans for performing the specified actions. It will also be understoodthat each block in each flowchart illustration, and combinations ofblocks in each flowchart illustration, can be implemented by specialpurpose hardware-based systems, which perform the specified actions orsteps, or combinations of special purpose hardware and computerinstructions. The foregoing example should not be construed as limitingor exhaustive, but rather, an illustrative use case to show animplementation of at least one of the various embodiments of theinvention.

Further, in one or more embodiments (not shown in the figures), thelogic in the illustrative flowcharts may be executed using an embeddedlogic hardware device instead of a CPU, such as, an Application SpecificIntegrated Circuit (ASIC), Field Programmable Gate Array (FPGA),Programmable Array Logic (PAL), or the like, or combination thereof. Theembedded logic hardware device may directly execute its embedded logicto perform actions. In one or more embodiments, a microcontroller may bearranged to directly execute its own embedded logic to perform actionsand access its own internal memory and its own external Input and OutputInterfaces (e.g., hardware pins or wireless transceivers) to performactions, such as System On a Chip (SOC), or the like.

What is claimed as new and desired to be protected by Letters Patent ofthe United States is:
 1. A method for visualizing data using a computerthat includes one or more processors, wherein the method is executed bythe one or more processors that perform actions, comprising: providing acomputed field that includes one or more input fields and a plurality ofobjects, wherein the computed field is an unparentable computed fieldthat is associated with an aggregate function; generating a sub-graphbased on one or more determined objects that are nodes of the sub-graphand relationships between two or more of the determined objects areedges of the sub-graph; iteratively pruning zero or more determinedobjects from the sub-graph based on a traversal of the sub-graph and oneor more characteristics of the one or more determined objects, whereineach pruned object is determined to be an attribute of at least one theone or more determined objects; and displaying a computed field in auser-interface based on a parent of the computed field being assigned toone remaining determined object.
 2. The method of claim 1, wherein theone or more determined objects further comprise: employing the one ormore input fields to generate the one or more determined objects fromthe plurality of objects, wherein each input field corresponds to adetermined object.
 3. The method of claim 1, wherein the plurality ofobjects further comprise: providing an object model that includes theplurality of objects, wherein the object model is based on one or moreof a data source or a data model.
 4. The method of claim 1, furthercomprising: in response to the iterative pruning providing two or moreremaining determined objects in the sub-graph, determining that thecomputed field is the unparentable computed field; and displaying theunparentable computed field in the user-interface.
 5. The method ofclaim 1, further comprising, determining the computed field is anunparentable computed field based on one or more of the input fieldsbeing a constant value.
 6. The method of claim 1, further comprising,determining one or more attributes of the one or more determined objectsbased on a determination of a many-to-one relationship between two ofthe determined objects.
 7. The method of claim 1, further comprising,employing one or more features or properties of an object model toprovide one or more visualizations included in the user interface.
 8. Asystem for visualizing data: a network computer, comprising: a memorythat stores at least instructions; and one or more processors thatexecute instructions that perform actions, including: providing acomputed field that includes one or more input fields and a plurality ofobjects, wherein the computed field is an unparentable computed fieldthat is associated with an aggregate function; generating a sub-graphbased on one or more determined objects that are nodes of the sub-graphand relationships between two or more of the determined objects areedges of the sub-graph; and iteratively pruning zero or more determinedobjects from the sub-graph based on a traversal of the sub-graph and oneor more characteristics of the one or more determined objects, whereineach pruned object is determined to be an attribute of at least one theone or more determined objects; and a client computer, comprising: amemory that stores at least instructions; and one or more processorsthat execute instructions that perform actions, including: displaying acomputed field in a user-interface based on a parent of the computedfield being assigned to one remaining determined object.
 9. The systemof claim 8, wherein the one or more determined objects further comprise:employing the one or more input fields to generate the one or moredetermined objects from the plurality of objects, wherein each inputfield corresponds to a determined object.
 10. The system of claim 8,wherein the plurality of objects further comprise: providing an objectmodel that includes the plurality of objects, wherein the object modelis based on one or more of a data source or a data model.
 11. The systemof claim 8, further comprising: in response to the iterative pruningproviding two or more remaining determined objects in the sub-graph,determining that the computed field is the unparentable computed field;and displaying the unparentable computed field in the user-interface.12. The system of claim 8, further comprising, determining the computedfield is an unparentable computed field based on one or more of theinput fields being a constant value.
 13. The method of claim 8, furthercomprising, determining one or more attributes of the one or moredetermined objects based on a determination of a many-to-onerelationship between two of the determined objects.
 14. The method ofclaim 8, further comprising, employing one or more features orproperties of an object model to provide one or more visualizationsincluded in the user interface.
 15. A processor readable non-transitorystorage media that includes instructions for visualizing data, whereinexecution of the instructions by one or more processors, performsactions, comprising: providing a computed field that includes one ormore input fields and a plurality of objects, wherein the computed fieldis an unparentable computed field that is associated with an aggregatefunction; generating a sub-graph based on one or more determined objectsthat are nodes of the sub-graph and relationships between two or more ofthe determined objects are edges of the sub-graph; iteratively pruningzero or more determined objects from the sub-graph based on a traversalof the sub-graph and one or more characteristics of the one or moredetermined objects, wherein each pruned object is determined to be anattribute of at least one the one or more determined objects; anddisplaying a computed field in a user-interface based on a parent of thecomputed field being assigned to one remaining determined object. 16.The processor readable non-transitory storage media of claim 15, whereinexecution of the instructions by the one or more processors, performsfurther actions, comprising: employing the one or more input fields togenerate the one or more determined objects from the plurality ofobjects, wherein each input field corresponds to a determined object.17. The processor readable non-transitory storage media of claim 15,wherein execution of the instructions by the one or more processors,performs further actions, comprising: providing an object model thatincludes the plurality of objects, wherein the object model is based onone or more of a data source or a data model.
 18. The processor readablenon-transitory storage media of claim 15, wherein execution of theinstructions by the one or more processors, performs further actions,comprising: in response to the iterative pruning providing two or moreremaining determined objects in the sub-graph, determining that thecomputed field is the unparentable computed field; and displaying theunparentable computed field in the user-interface.
 19. The processorreadable non-transitory storage media of claim 15, wherein execution ofthe instructions by the one or more processors, performs furtheractions, comprising: determining the computed field is an unparentablecomputed field based on one or more of the input fields being a constantvalue.
 20. The processor readable non-transitory storage media of claim15, wherein execution of the instructions by the one or more processors,performs further actions, comprising: employing one or more features orproperties of an object model to provide one or more visualizationsincluded in the user interface.